﻿// #include <benchmark/benchmark.h>

// #include <learn/utils/tga_image.h>
// #include <learn/painter/painter2d.h>

// using namespace xi;
// using namespace xi::painter;
// using namespace xi::utils;

// namespace
// {

// void line(int x0, int y0, int x1, int y1, TGA_Image &image, TGA_Color color)
// {
//     bool steep = false;
//     if (std::abs(x0 - x1) < std::abs(y0 - y1))
//     {
//         std::swap(x0, y0);
//         std::swap(x1, y1);
//         steep = true;
//     }
//     if (x0 > x1)
//     {
//         std::swap(x0, x1);
//         std::swap(y0, y1);
//     }
//     int dx = x1 - x0;
//     int dy = y1 - y0;
//     int derror2 = std::abs(dy) * 2;
//     int error2 = 0;
//     int y = y0;
//     for (int x = x0; x <= x1; x++)
//     {
//         if (steep)
//         {
//             image.set(y, x, color);
//         }
//         else
//         {
//             image.set(x, y, color);
//         }
//         error2 += derror2;
//         if (error2 > dx)
//         {
//             y += (y1 > y0 ? 1 : -1);
//             error2 -= dx * 2;
//         }
//     }
// }

// void bench_line(benchmark::State &state)
// {
//     TGA_Image image(1024, 1024, TGA_Image::RGB);

//     for (auto _ : state)
//     {
//         line(0, 0, 1023, 1023, image, TGA_Color(255, 0, 0));
//     }
// }
// BENCHMARK(bench_line);

// void bench_bresenham_line(benchmark::State &state)
// {
//     painter::Painter2D painter(1024, 1024);

//     for (auto _ : state)
//     {
//         painter.draw_line(0, 0, 1023, 1023, TGA_Color(255, 0, 0));
//     }
// }
// BENCHMARK(bench_bresenham_line);

// } // namespace
